Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[main] Update AL-Go System Files from microsoft/AL-Go-PTE@preview - ef914042bcf3fb640cbf150a975c08e33657cf4a #255

Merged
merged 1 commit into from
Dec 18, 2024

Conversation

aholstrup1
Copy link
Owner

v6.2

Issues

  • Issue 1296 Make property "appFolders" optional
  • Issue 1344 Experimental feature "git submodules" seems to be a breaking change
  • Issue 1305 Extra telemetry Property RepositoryOwner and RepositoryName¨
  • Add RunnerEnvironment to Telemetry
  • Output a notice, not a warning, when there are no available updates for AL-Go for GitHub

New Repository Settings

  • useGitSubmodules can be either true or recursive if you want to enable Git Submodules in your repository. If your Git submodules resides in a private repository, you need to create a secret called gitSubmodulesToken containing a PAT with access to the submodule repositories. Like with all other secrets, you can also create a setting called gitSubmodulesTokenSecretName and specify the name of another secret, with these permissions (f.ex. ghTokenWorkflow).
  • commitOptions - is a structure defining how you want AL-Go to handle automated commits or pull requests coming from AL-Go (e.g. for Update AL-Go System Files). The structure contains the following properties
    • messageSuffix : A string you want to append to the end of commits/pull requests created by AL-Go. This can be useful if you are using the Azure Boards integration (or similar integration) to link commits to workitems.
    • pullRequestAutoMerge : A boolean defining whether you want AL-Go pull requests to be set to auto-complete. This will auto-complete the pull requests once all checks are green and all required reviewers have approved.
    • pullRequestLabels : A list of labels to add to the pull request. The labels need to be created in the repository before they can be applied.

Support for Git submodules

In v6.1 we added experimental support for Git submodules - this did however only work if the submodules was in a public repository. In this version, you can use the useGitSubmodules setting to control whether you want to use Git Submodules and the gitSubmodulesToken secret to allow permission to read these repositories.

v6.1

Issues

  • Issue 1241 Increment Version Number might produce wrong app.json
  • When auto discovering appFolders, testFolders and bcptTestFolders - if a BCPT Test app has a dependency to a test framework app, it is added to testFolders as well as bcptTestFolders and will cause a failure.

New Project Settings

  • pageScriptingTests should be an array of page scripting test file specifications, relative to the AL-Go project. Examples of file specifications: recordings/my*.yml (for all yaml files in the recordings subfolder matching my*.yml), recordings (for all *.yml files in the recordings subfolder) or recordings/test.yml (for a single yml file)
  • doNotRunPageScriptingTests can force the pipeline to NOT run the page scripting tests specified in pageScriptingTests. Note this setting can be set in a workflow specific settings file to only apply to that workflow
  • restoreDatabases should be an array of events, indicating when you want to start with clean databases in the container. Possible events are: BeforeBcpTests, BeforePageScriptingTests, BeforeEachTestApp, BeforeEachBcptTestApp, BeforeEachPageScriptingTest

New Repository Settings

  • trustedSigning is a structure defining Account, EndPoint and CertificateProfile if you want to use trusted signing. Note that your Azure_Credentials secret (Microsoft Entra ID App or Managed identity) still needs to provide access to your azure subscription and be assigned the Trusted Signing Certificate Profile Signer role in the Trusted Signing Account.
  • deployTo<environment> now has an additional property called DependencyInstallMode, which determines how dependencies are deployed if GenerateDependencyArtifact is true. Default value is install to install dependencies if not already installed. Other values are ignore for ignoring dependencies, upgrade for upgrading dependencies if possible and forceUpgrade for force upgrading dependencies.

Support for Azure Trusted Signing

Read https://learn.microsoft.com/en-us/azure/trusted-signing/ for more information about Trusted Signing and how to set it up. After setting up your trusted signing account and certificate profile, you need to create a setting called trustedSigning for AL-Go to sign your apps using Azure Trusted Signing.

Support for Page Scripting Tests

Page Scripting tests are now supported as part of CI/CD. By specifying pageScriptingTests in your project settings file, AL-Go for GitHub will automatically run these page scripting tests as part of your CI/CD workflow, generating the following build artifacts:

  • PageScriptingTestResults is a JUnit test results file with all results combined.
  • PageScriptingTestResultDetails are the detailed test results (including videos) when any of the page scripting tests have failures. If the page scripting tests succeed - the details are not published.

Experimental support for Git submodule

Git submodule is now supported as part of CI/CD on your project.

v6.0

Issues

  • Issue 1184 Publish to Environment fails on 'Permission Denied'
  • AL Language extension in 25.0 doesn't contain the linux executable, use dotnet to invoke the dll instead.

New Settings

  • deliverTo<deliverytarget> now has an additional property called ContinuousDelivery, indicating whether or not to run continuous delivery to this deliveryTarget. Default is true.
  • trustMicrosoftNuGetFeeds Unless this setting is set to false, AL-Go for GitHub will trust the NuGet feeds provided by Microsoft. The feeds provided by Microsoft contains all Microsoft apps, all Microsoft symbols and symbols for all AppSource apps.
  • trustedNuGetFeeds - can be an array of NuGet feed specifications, which AL-Go for GitHub will use for dependency resolution. Every feed specification must include a URL property and can optionally include a few other properties:
    • url - The URL of the feed (examples: https://pkgs.dev.azure.com/myorg/apps/\_packaging/myrepo/nuget/v3/index.json or https://nuget.pkg.github.com/mygithuborg/index.json").
    • patterns - AL-Go for GitHub will only trust packages, where the ID matches this pattern. Default is all packages (*).
    • fingerprints - If specified, AL-Go for GitHub will only trust packages signed with a certificate with a fingerprint matching one of the fingerprints in this array.
    • authTokenSecret - If the NuGet feed specified by URL is private, the authTokenSecret must be the name of a secret containing the authentication token with permissions to search and read packages from the NuGet feed.

Support for delivering to GitHub Packages and NuGet

With this release the implementation for delivering to NuGet packages (by adding the NuGetContext secret), is similar to the functionality behind delivering to GitHub packages and the implementation is no longer in preview.

Allow GitHubRunner and GitHubRunnerShell as project settings

Previously, AL-Go required the GitHubRunner and GitHubRunnerShell settings to be set on repository level. This has now been changed such that they can be set on project level.

v5.3

Issues

  • Issue 1105 Increment Version Number - repoVersion in .github/AL-Go-Settings.json is not updated
  • Issue 1073 Publish to AppSource - Automated validation: failure
  • Issue 980 Allow Scope to be PTE in continuousDeployment for PTE extensions in Sandbox (enhancement request)
  • Issue 1079 AppSource App deployment failes with PerTenantExtensionCop Error PTE0001 and PTE0002
  • Issue 866 Accessing GitHub Environment Variables in DeployToCustom Scenarios for PowerShell Scripts
  • Issue 1083 SyncMode for custom deployments?
  • Issue 1109 Why filter deployment settings?
  • Fix issue with github ref when running reusable workflows
  • Issue 1098 Support for specifying the name of the AZURE_CREDENTIALS secret by adding a AZURE_CREDENTIALSSecretName setting
  • Fix placeholder syntax for git ref in PullRequestHandler.yaml
  • Issue 1164 Getting secrets from Azure key vault fails in Preview

Dependencies to PowerShell modules

AL-Go for GitHub relies on specific PowerShell modules, and the minimum versions required for these modules are tracked in Packages.json file. Should the installed modules on the GitHub runner not meet these minimum requirements, the necessary modules will be installed as needed.

Support managed identities and federated credentials

All authentication context secrets now supports managed identities and federated credentials. See more here. Furthermore, you can now use https://aka.ms/algosecrets#authcontext to learn more about the formatting of that secret.

Business Central Performance Toolkit Test Result Viewer

In the summary after a Test Run, you now also have the result of performance tests.

Support Ubuntu runners for all AL-Go workflows

Previously, the workflows "Update AL-Go System Files" and "TroubleShooting" were hardcoded to always run on windows-latest to prevent deadlocks and security issues.
From now on, ubuntu-lates will also be allowed for these mission critical workflows, when changing the runs-on setting. Additionally, only the value pwsh for shell setting is allowed when using ubuntu-latest runners.

Updated AL-Go telemetry

AL-Go for GitHub now includes a new telemetry module. For detailed information on how to enable or disable telemetry and to see what data AL-Go logs, check out this article.

New Settings

  • deployTo<environmentName>: is not really new, but has a new property:

    • Scope = specifies the scope of the deployment: Dev, PTE. If not specified, AL-Go for GitHub will always use the Dev Scope for AppSource Apps, but also for PTEs when deploying to sandbox environments when impersonation (refreshtoken) is used for authentication.
    • BuildMode = specifies which buildMode to use for the deployment. Default is to use the Default buildMode.
    • <custom> = custom properties are now supported and will be transferred to a custom deployment script in the hashtable.
  • bcptThresholds is a JSON object with properties for the default thresholds for the Business Central Performance Toolkit

    • DurationWarning - a warning is issued if the duration of a bcpt test degrades more than this percentage (default 10)
    • DurationError - an error is issued if the duration of a bcpt test degrades more than this percentage (default 25)
    • NumberOfSqlStmtsWarning - a warning is issued if the number of SQL statements from a bcpt test increases more than this percentage (default 5)
    • NumberOfSqlStmtsError - an error is issued if the number of SQL statements from a bcpt test increases more than this percentage (default 10)

Note

Duration thresholds are subject to varying results depending on the performance of the agent running the tests. Number of SQL statements executed by a test is often the most reliable indicator of performance degredation.

v5.2

Issues

  • Issue 1084 Automatic updates for AL-Go are failing when main branch requires Pull Request

New Settings

  • PowerPlatformSolutionFolder: Contains the name of the folder containing a PowerPlatform Solution (only one)
  • DeployTo<environment> now has two additional properties companyId is the Company Id from Business Central (for PowerPlatform connection) and ppEnvironmentUrl is the Url of the PowerPlatform environment to deploy to.

New Actions

  • BuildPowerPlatform: to build a PowerPlatform Solution
  • DeployPowerPlatform: to deploy a PowerPlatform Solution
  • PullPowerPlatformChanges: to pull changes made in PowerPlatform studio into the repository
  • ReadPowerPlatformSettings: to read settings and secrets for PowerPlatform deployment
  • GetArtifactsForDeployment: originally code from deploy.ps1 to retrieve artifacts for releases or builds - now as an action to read apps into a folder.

New Workflows

  • Pull PowerPlatform Changes for pulling changes from your PowerPlatform development environment into your AL-Go for GitHub repository
  • Push PowerPlatform Changes for pushing changes from your AL-Go for GitHub repository to your PowerPlatform development environment

Note

PowerPlatform workflows are only available in the PTE template and will be removed if no PowerPlatformSolutionFolder is defined in settings.

New Scenarios (Documentation)

Note

PowerPlatform functionality are only available in the PTE template.

v5.1

Issues

  • Issue 1019 CI/CD Workflow still being scheduled after it was disabled
  • Issue 1021 Error during Create Online Development Environment action
  • Issue 1022 Error querying artifacts: No such host is known. (bcartifacts-exdbf9fwegejdqak.blob.core.windows.net:443)
  • Issue 922 Deploy Reference Documentation (ALDoc) failed with custom
  • ContainerName used during build was invalid if project names contained special characters
  • Issue 1009 by adding a includeDependencies property in DeliverToAppSource
  • Issue 997 'Deliver to AppSource' action fails for projects containing a space
  • Issue 987 Resource not accessible by integration when creating release from specific version
  • Issue 979 Publish to AppSource Documentation
  • Issue 1018 Artifact setting - possibility to read version from app.json
  • Issue 1008 Allow PullRequestHandler to use ubuntu or self hosted runners for all jobs except for pregateCheck
  • Issue 962 Finer control of "shell"-property
  • Issue 1041 Harden the version comparison when incrementing version number
  • Issue 1042 Downloading artifacts from GitHub doesn't work with branch names which include forward slashes

Better artifact selection

The artifact setting in your project settings file can now contain a * instead of the version number. This means that AL-Go for GitHub will determine the application dependency for your projects together with the applicationDependency setting and determine which Business Central version is needed for the project.

  • "artifact": "//*//latest" will give you the latest Business Central version, higher than your application dependency and with the same major.minor as your applica...

Truncated due to size limits!

@aholstrup1 aholstrup1 merged commit 22e8a05 into main Dec 18, 2024
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant